import java.util.*;

public class Test2 {
    public static void main(String[] args) {
        List<List<Integer>> ret= Solution.generate(4);
        for (int i = 0; i < ret.size(); i++) {
            for (int j = 0; j < ret.get(i).size(); j++) {
                System.out.print(ret.get(i).get(j)+" ");
            }
            System.out.println();
        }
    }
    public static void main1(String[] args) {
        String str1="welcome to AHU";
        String str2="come";
        ArrayList<Character> ret=new ArrayList<>();

        for (int i = 0; i <str1.length() ; i++) {
            char ch=str1.charAt(i);
            if(str2.contains(ch+"")==false){
                ret.add(ch);
            }
        }
        for (int i = 0; i < ret.size(); i++) {
            System.out.print(ret.get(i));
        }
    }
}
class Solution {

    public static List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ret= new ArrayList<>();
        List<Integer> firstRow=new ArrayList<>();
        firstRow.add(1);
        ret.add(firstRow);
        for (int i = 1; i <numRows ; i++) {//第一行已经放入
            List<Integer> curRow=new ArrayList<>();
            //首元素
            curRow.add(1);
            //找到当前行的上一行的数组
            List<Integer> prevRow=ret.get(i-1);
            //处理中间元素
            for (int j = 1; j < i; j++) {//第一列和最后一列已经放入
                int val1= prevRow.get(j);
                int val2= prevRow.get(j-1);
                curRow.add(val1+val2);
            }
            //末元素
            curRow.add(1);
            ret.add(curRow);
        }
        return ret;
    }
}